草庐IT

C++ 行到 vector

全部标签

c++ - 本地 C++ vector 的内存分配在哪里?

我注意到vector的内存是动态分配的。那么对于一个localvector来说,内存分配到哪里呢?f(){vectorvi;} 最佳答案 vector分配在堆栈上(在我的系统上是28个字节)。vector内容分配在堆上。 关于c++-本地C++vector的内存分配在哪里?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2388224/

c++ - 查找一个 vector 的 max_element,其中一个成员用于决定它是否是最大值

考虑一个类A有一个成员x和一个std::vector。现在,在vector内的所有元素中搜索最大的x是一项常见的任务。显然,如果x上有迭代器,我只能使用std::max_element。但是我必须自己写一个,或者我只是做一个简单的for循环。maxSoFar=-std::numeric_limits::max();for(std::vector::const_iteratorcit=as.begin();cit!=as.end();++cit){if(cit->x>maxSoFar)maxSoFar=cit->x;}但是太繁琐了,我又很懒..有没有更好的选择?

c++ - vector<char> 到字符串段错误

试图从一个vector中初始化一个字符串。我应该得到“嘿”作为输出。但我得到了“段错误”。我做错了什么?//writeaprogramthatinitializesastringfromavector#include#include#includeusingnamespacestd;intmain(){vectorcvec;cvec[0]='h';cvec[1]='e';cvec[2]='y';strings(cvec.begin(),cvec.end());cout 最佳答案 vector类开始时的大小为零(默认情况下)。所以这样

c++ - 为什么Vector的size()和capacity()在push_back()之后不一样

我刚开始学习vector,对size()和capacity()有点困惑我对他们两个都知之甚少。但是为什么在这个程序中两者是不同的呢?甚至array(10)也在为10个元素腾出空间并用0进行初始化。在添加array.push_back(5)之前所以array.size();是10没问题。所以array.capacity();是10没问题。添加array.push_back(5)后所以array.size();是11就可以了(已经添加了10次0然后push_back再添加一个元素5)。所以array.capacity();是15为什么?(是否为一个int保留5个block?)。#inclu

c++ - 是否可以创建指针 vector ?

只是想知道,由于我遇到了一个问题,是否可以创建一个指针vector?如果是这样,怎么办?特别是关于使用迭代器和.begin(),即:我如何将这个vector变成指针vector:classc{voidvirtualfunc();};classsc:publicc{voidfunc(){coutcvectcvect.push_back(cobj);vector::iteratorciterfor(citer=cvect.begin();citerfunc();} 最佳答案 当然可以。vectorcvect;cvect.push_bac

c++ - 在两个 vector 之间交换值,使两个 vector 的 max_elements 之和最小

这是来自Codechef的问题,但请耐心等待。https://www.codechef.com/ZCOPRAC/problems/ZCO16001该竞赛是为在印度举行的ZonalComputingOlympiad做准备,因此它不是一个我可以从中获得一些东西的竞争性竞赛。只需要一点帮助来查看我的代码有什么问题,因为我觉得我忽略了一些大而愚蠢的事情。:P所以基本上这个问题总结起来就是这样。Letssaythattherearetwovectorsorarrays.Youneedtoswapelementsbetweenthemsuchthatthesumoftheirmaximumelem

c++ - 提升 Python 和 shared_ptr 的 vector

我已经阅读了如何在boostpython中向python公开法vector,但我想知道如何公开和使用vector。例如,我有一个shared_ptrvector,如下所示:std::vector>Effects;根据暴露vector的资料,我应该可以暴露这种类。我想知道的是我怎样才能真正添加​​到它?如何创建shared_ptr的实例因为我无权访问new,而且shared_ptr可以指向多个派生类型,这使得向每个类添加静态创建方法有点乏味。有没有人有一些指示或可以建议如何做到这一点?为我想做的事情找到boost::python的好例子有点棘手提前致谢 最佳答

c++ - 按列主要顺序重新排序 3D vector 三元组很慢

我有很多(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)单精度vector三元组,我想对它们重新排序,所以(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)成为(x1,x2,x3,0,y1,y2,y3,0,z1,z2,z3,0)目标是为基于SSE的计算准备数据集。我有以下代码来执行此操作:for(inti=0;i循环的最后3行非常慢,它们占用了我整个算法时间的90%!这正常吗?我可以让这样的洗牌更快吗?(scratch是一个静态变量,并且是16对齐的。该函数被频繁调用,所以我认为scratch的block不应该从缓存中消失。)

c++ - std::vector<T>::pop_back 的正式规范

我正在查看C++标准(草案n3797),我找不到任何关于pop_back的文档,因为它适用于std::vector,只有对于std::list。真的不见了吗?具体来说,我一直在寻找pop_back不会改变容量的保证。或者根本没有这样的保证?(我希望迭代器和对其他元素的引用将保持有效,但我找不到这种保证,而且它不会限制删除最后一个元素的情况) 最佳答案 不,它没有错过。在101§23.2.3的表格中,您可以看到pop_back存在于vector。16Table101listsoperationsthatareprovidedforso

c++ - 在 std::bitset 和 std::vector<bool> 之间转换

我有一个std::bitset但现在我想在上面使用STL算法。我本可以使用std::vector相反,但我喜欢std::bitset的构造函数,我想要std::bitset的位运算。我是否必须经历一个循环并将所有内容都填充到std::vector中?使用STL算法,然后将其复制回std::bitset,或者有更好的方法吗? 最佳答案 如果您不想使用bitset的operator[]编写循环,那么您可以尝试使用bitset::to_string()将bitset转换为'1'和'0'的字符串。从C++11开始,您实际上可以选择与这两个字